// 封装分类数据业务相关代码
import { onMounted, ref } from 'vue'
import { getTopCategoryAPI } from '@/apis/category'
import { useRoute } from 'vue-router'
import { onBeforeRouteUpdate } from 'vue-router'
import { watch } from 'vue'

export function useCategory () {
  // 获取分类数据
  const categoryData = ref({})
  const route = useRoute()
  const getCategory = async (id = route.params.id) => {
    const res = await getTopCategoryAPI(id)
    categoryData.value = res.result
  }
  onMounted(() => getCategory())

  // // 路由缓存，如果只是参数改变，路由地址不变，组件不会销毁，数据不会更新
  // // 路由参数变化的时候 可以把分类数据接口重新发送
  // onBeforeRouteUpdate((to) => {
  //   // 使用最新的路由参数请求最新的分类数据
  //   getCategory(to.params.id)
  // })
  
  // 通过watch监听，可以在参数改变时，重新渲染组件
  watch(() => route.params.id, (newId) => {
    if (newId) {
      getCategory()
    }
  })

  return {
    categoryData
  }
} 